package com.liu.oa.framwork.config;

import javax.sql.DataSource;

import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ActivtiConfig {
	
	@Autowired
	private DataSource dataSource;
	
	  @Bean

	    public StandaloneProcessEngineConfiguration processEngineConfiguration() {

	        StandaloneProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration();

	        configuration.setDataSource(dataSource);

	        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);

	        configuration.setAsyncExecutorActivate(false);

	        return configuration;

	    }

	    @Bean

	    public ProcessEngine processEngine() {

	        return processEngineConfiguration().buildProcessEngine();

	    }

	    @Bean

	    public RepositoryService repositoryService() {

	        return processEngine().getRepositoryService();

	    }

	    @Bean

	    public RuntimeService runtimeService() {

	        return processEngine().getRuntimeService();

	    }

	    @Bean

	    public TaskService taskService() {

	        return processEngine().getTaskService();

	    }

	    @Bean
	   public HistoryService historyService(){
	        return  processEngine().getHistoryService();
	        }

}
